package lib

import (
	"fmt"
	"time"
)

/*
 * 描述: 字符转换为时间戳
 *
 * 	strTime : 格式为 "2018-01-10"
 *
 ***************************************************************************/
func StringToTime(strTime string) int64 {
	//获取本地location
	strTem := "2006-01-02"
	timeLocal, _ := time.LoadLocation("Local")
	theTime, _ := time.ParseInLocation(strTem, strTime, timeLocal)
	return theTime.Unix()
}

/*
 * 描述: 整数转换为时间戳
 *
 ***************************************************************************/
func IntToTime(nTimer int64) time.Time {
	return time.Unix(nTimer, 0)
}

/*
 * 描述: 字符转换为时间戳
 *
 * 	strTime : 格式为 "2018-01-10 03:04:05"
 *
 ***************************************************************************/
func StringToTimeEx(strTime string) int64 {
	//获取本地location
	strTem := "2006-01-02 15:04:05"
	timeLocal, _ := time.LoadLocation("Local")
	theTime, _ := time.ParseInLocation(strTem, strTime, timeLocal)
	return theTime.Unix()
}

/*
 * 描述: 时间戳转格式化为字符串
 *
 ***************************************************************************/
func TimeToString(nTimer int64) string {
	tm := time.Unix(nTimer, 0)
	//strTime := tm.Format("2006-01-02 03:04:05 PM")
	return tm.Format("20060102")
}

/*
 * 描述: 时间戳转格式化为字符串
 *
 ***************************************************************************/
func TimeToStringEx(nTimer int64) string {
	tm := time.Unix(nTimer, 0)
	return tm.Format("2006-01-02 03:04:05 PM")
}

/*
 * 描述: 查看 输入时间戳 是否是今天
 *
 * 	checkTime : 查看的时间戳
 *
 ***************************************************************************/
func IsToday(checkTime int64) bool {
	nowTime := time.Now().Unix()
	nowTime -= (nowTime + 28800) % 86400
	if checkTime > nowTime {
		return true
	}
	return false
}

/*
 * 描述: 获取输入 时间戳 的零点时间戳
 *
 * 	checkTime : 所求的时间戳
 *
 ***************************************************************************/
func GetZero(checkTime int64) int64 {
	checkTime -= (checkTime + 28800) % 86400
	return checkTime
}

/*
 * 描述: 整点，向下取整
 *
 * 	checkTime : 所求的时间戳
 *
 ***************************************************************************/
func GetHourZero(checkTime uint32) uint32 {
	return checkTime - (checkTime % 3600)
}

/*
 * 描述: 求所当前月1号到下个月1号，两个时间戳
 *
 ***************************************************************************/
func Interval() (int64, int64) {
	year := time.Now().Year()
	month := time.Now().Month()
	stime := time.Date(year, month, 1, 0, 0, 0, 0, time.Local).Unix()
	etime := time.Date(year, (month + 1), 1, 0, 0, 0, 0, time.Local).Unix()
	return stime, etime
}

/*
 * 描述: 获取某个月以前或以后的时间戳 -:前，+:后
 *
 ***************************************************************************/
func IntervalMonth(n int) int64 {
	return time.Now().AddDate(0, n, 0).Unix()
}

/*
 * 描述: 获取输入 时间戳 的时分秒时间
 * 	checkTime : 传入时间戳
 *
 ***************************************************************************/
func GetHMSTime(checkTime int64) string {
	timeTemplate4 := "15:04:05"                           //其他类型
	time := time.Unix(checkTime, 0).Format(timeTemplate4) //输出：13:50:30
	return time
}

/*
 * 描述: 获取输入 时间戳 的年月日yyyy-mm-dd时间
 * 	checkTime : 传入时间戳
 *
 ***************************************************************************/
func GetYMDTime(checkTime int64) (strtime string) {

	timeObj := time.Unix(checkTime, 0)
	fmt.Println(timeObj)
	strtime = timeObj.Format("2006-01-02")

	return
}

/*
 * 描述: 时间戳转成time类型
 * 	timestamp : 传入时间戳,
 *
 ***************************************************************************/
func GetTimeByInt(timestamp int64) time.Time {
	return time.Unix(timestamp, 0)
}
